//eval() 欺骗词法
function foo(str, a) {
  eval(str)
  console.log(a, b);
}
var a = 1, b = 2
foo('var b = 3', a)
// let b = 2
// foo('let b = 3', 1)

// const obj = {
//   a: 1,
//   b: 2,
//   c: 3
// }

// obj.a = 2
// obj.b = 4
// obj.c = 6

// with(obj) {
//   a = 2
//   b = 3
//   c = 4
// }//可以批量化修改对象属性

// const o1 = {
//   a: 1
// }

// const o2 = {
//   b: 1
// }

// function foo(obj) {
//   with(obj) {
//     a = 2
//   }
// }//当一个对象没有with中的属性而要强行修改时，会把with中对象那个没有的属性泄露为全局变量
// foo(o2)
// console.log(a);
